package 简单.双指针;

/**
 * 给你一个字符串 s，它仅由字母 'a' 和 'b' 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。
 * <p>
 * 返回删除给定字符串中所有字符（字符串为空）的最小删除次数。
 * <p>
 * 「子序列」定义：如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到，那么这个字符串就是原字符串的一个子序列。
 * <p>
 * 「回文」定义：如果一个字符串向后和向前读是一致的，那么这个字符串就是一个回文。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/remove-palindromic-subsequences
 */
public class 删除回文子序列_1332 {

    public static void main(String[] args) {

        String s = "abba";
        System.out.println(removePalindromeSub(s));

    }

    /**
     * 子序列定义：如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到
     * 注意：
     * 可以索引不连续的删除，任意选择字符串中的任何位置！！！
     * 题目中只包含a,b两种字符！！！
     * 如果是回文字符串，一次删除
     * 如果不是回文字符串，第一次删除a字符，第二次删除b字符，两次删除
     *
     * @param s
     * @return
     */
    public static int removePalindromeSub(String s) {
        int left = 0, right = s.length() - 1;
        while (left < right) {
            if (s.charAt(left) != s.charAt(right)) {
                return 2;
            }
            left++;
            right--;
        }
        return 1;
    }

}
